package org.ycb.ycbisgod.ycbwoxihuanni.service;

import org.apache.ibatis.annotations.Param;
import org.ycb.ycbisgod.ycbwoxihuanni.entity.Node;

import java.util.List;

public interface INodeService {
    List<Node> getParents(Integer nodeId);

    /*
     *获取所有节点
     */
    List<Node> list();

    /*
     *添加节点
     * @param node 节点实体
     */
    boolean save(Node node);

    //根据主人id获取节点
    Node findByOwnerId(Integer OwnerId);

    /*
     * 根据节点ID获取其所有子节点（通过 NodeNextNode 关联）。
     * @param nodeId 父节点的ID
     * @return 子节点Node实体的列表
     */
    List<Node> getChildren(Integer nodeId);

    /**
     * 添加一个节点的子节点关系。
     * @param nodeId 父节点的ID
     * @param nextnodeId 子节点的ID
     * @return 是否添加成功
     */

    boolean addNextNodeConnect(Integer nodeId, Integer nextnodeId);

    /*
     * 在Node表新建一个节点的同时添加上与现有节点的联系。
     * 即：创建一个新的子节点，并将其关联到指定的父节点。
     * @param parentNodeId 父节点的ID
     * @param newChildNode 要新建的子节点实体（ID可以为空，保存后会自动生成）
     * @return 是否添加成功
     */
    boolean addNextNode(Integer nodeid,Node nextnode);

    /**
     * 删除一个节点的子节点。
     * @param nodeId 父节点的ID
     * @param nextnodeId 子节点的ID
     * @return 是否删除成功
     */
    boolean removeNextNode(Integer nodeId, Integer nextnodeId);
}
